package web.java.f_DbUtils;

import static org.junit.Assert.*;

import java.sql.Connection;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

import web.java.z_Utils.DBUtils;

public class Demo02_update {
	/**
	 * 使用DbUtils中的QueryRunner工具类，实现更新，主要方法有：
	 * 1、int runner.update(Connection conn, String sql, int... params); 处理单个执行更新操作
	 * 	a 数据库连接对象
	 * 	b sql语句
	 * 	c 占位符参数，可以输入多个
	 * 	return 返回一个整型变量，表示影响的行数
	 * 2、int[] runner.batch(Connection conn, String sql, Object[][] params); 批处理更新操作
	 * 	a 数据库连接对象
	 *  b sql语句
	 *  c 二维对象数组，占位符参数，可以输入多套占位符
	 *  return 返回一个整型数组，表示每套占位符所影响的行数
	 * */
	@Test
	public void testUpdate() throws Exception {
		//1、写sql语句
		String sql="DELETE FROM emp WHERE emp_id>=?;";
		//2、创建连接
		Connection conn=DBUtils.getConnection();
		//3、定义QueryRunner工具类对象
		QueryRunner qr=new QueryRunner();
		//3、执行更新操作，并返回影响的行数
		int result=qr.update(conn,sql,26);
		System.out.println(result);
		//4、关闭数据库连接
		DbUtils.close(conn);
	}
	@Test
	public void testBatch() throws Exception {
		String sql="INSERT INTO emp(emp_name,emp_age,emp_salary,emp_consume,emp_gender) VALUES(?,?,?,?,?);";
		QueryRunner qr=new QueryRunner();
		Connection conn=DBUtils.getConnection();
		qr.batch(conn,sql,new Object[][]{{"runner1",21,2312,32311,"男"},{"runner2",21,2312,32311,"男"}});
		DbUtils.close(conn);
	}
	@Test
	public void testDel() throws Exception {
		String sql="delete from emp where emp_id=?";
		QueryRunner qr=new QueryRunner();
		Connection conn=DBUtils.getConnection();
		int [] result=qr.batch(conn,sql,new Object[][]{{25},{30},{31}});
		for(int i=0;i<result.length;i++){
			System.out.println(result[i]);
		}
	}
}
